home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Sprite 1984 - 1993
/
Sprite 1984 - 1993.iso
/
src
/
lib
/
c
/
string
/
strerror.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-01
|
5KB
|
141 lines
/*
* strerror.c --
*
* Source code for the "strerror" library routine.
*
* Copyright 1988 Regents of the University of California
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies. The University of California
* makes no representations about the suitability of this
* software for any purpose. It is provided "as is" without
* express or implied warranty.
*/
#ifndef lint
static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strerror.c,v 1.6 90/06/27 11:16:32 shirriff Exp $ SPRITE (Berkeley)";
#endif /* not lint */
#include <stdio.h>
#include <string.h>
/*
* List of known errors:
*/
char *sys_errlist[] = {
"no error (operation succeeded", /* 0 */
"not owner", /* EPERM */
"no such file or directory", /* ENOENT */
"no such process", /* ESRCH */
"interrupted system call", /* EINTR */
"I/O error", /* EIO */
"no such device or address", /* ENXIO */
"argument list too long", /* E2BIG */
"exec format error", /* ENOEXEC */
"bad file number", /* EBADF */
"no children", /* ECHILD */
"no more processes", /* EAGAIN */
"not enough memory", /* ENOMEM */
"permission denied", /* EACCESS */
"bad address in system call argument", /* EFAULT */
"block device required", /* ENOTBLK */
"mount device busy", /* EBUSY */
"file already exists", /* EEXIST */
"cross-domain link", /* EXDEV */
"no such device", /* ENODEV */
"not a directory", /* ENOTDIR */
"illegal operation on a directory", /* EISDIR */
"invalid argument", /* EINVAL */
"file table overflow", /* ENFILE */
"too many open files", /* EMFILE */
"inappropriate device for ioctl", /* ENOTTY */
"text file or pseudo-device busy", /* ETXTBSY */
"file too large", /* EFBIG */
"no space left in file system domain", /* ENOSPC */
"illegal seek", /* ESPIPE */
"read-only file system", /* EROFS */
"too many links", /* EMLINK */
"broken pipe", /* EPIPE */
"math argument out of range", /* EDOM */
"math result unrepresentable", /* ERANGE */
"operation would block", /* EWOULDBLOCK */
"operation now in progress", /* EINPROGRESS */
"operation already in progress", /* EALREADY */
"socket operation on non-socket", /* ENOTSOCK */
"destination address required", /* EDESTADDRREQ */
"message too long", /* EMSGSIZE */
"protocol wrong type for socket", /* EPROTOTYPE */
"bad proocol option", /* ENOPROTOOPT */
"protocol not suppored", /* EPROTONOSUPPORT */
"socket type not supported", /* ESOCKTNOSUPPORT */
"operation not supported on socket", /* EOPNOTSUPP */
"protocol family not supported", /* EPFNOSUPPORT */
"address family not supported by protocol family", /* EAFNOSUPPORT */
"address already in use", /* EADDRINUSE */
"can't assign requested address", /* EADDRNOTAVAIL */
"network is down", /* ENETDOWN */
"network is unreachable", /* ENETUNREACH */
"network dropped connection on reset", /* ENETRESET */
"software caused connection abort", /* ECONNABORTED */
"connection reset by peer", /* ECONNRESET */
"no buffer space available", /* ENOBUFS */
"socket is already connected", /* EISCONN */
"socket is not connected", /* ENOTCONN */
"can't send afer socket shutdown", /* ESHUTDOWN */
"undefined error (59)", /* not used */
"connection timed out", /* ETIMEDOUT */
"connection refused", /* ECONNREFUSED */
"too many levels of symbolic links", /* ELOOP */
"file name too long", /* ENAMETOOLONG */
"host is down", /* EHOSTDOWN */
"host is unreachable", /* EHOSTUNREACH */
"directory not empty", /* ENOTEMPTY */
"too many processes", /* EPROCLIM */
"too many users", /* EUSERS */
"disk quota exceeded", /* EDQUOT */
"stale remote file handle", /* ESTALE */
"pathname hit remote file system", /* EREMOTE */
"undefined error (72)", /* not used */
"undefined error (73)", /* not used */
"undefined error (74)", /* not used */
"undefined error (75)", /* not used */
"undefined error (76)", /* not used */
"identifier removed", /* EIDRM */
};
int sys_nerr = sizeof(sys_errlist)/sizeof(char *);
/*
*----------------------------------------------------------------------
*
* strerror --
*
* Map an integer error number into a printable string.
*
* Results:
* The return value is a pointer to a string describing
* error. The first character of string isn't capitalized.
*
* Side effects:
* Each call to this procedure may overwrite the value returned
* by the previous call.
*
*----------------------------------------------------------------------
*/
char *
strerror(error)
int error; /* Integer identifying error (must be
* one of the officially-defined Sprite
* errors, as defined in errno.h). */
{
static char defaultMsg[50];
if ((error <= sys_nerr) && (error > 0)) {
return sys_errlist[error];
}
(void) sprintf(defaultMsg, "unknown error (%d)", error);
return defaultMsg;
}